home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_httplib.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  6KB  |  173 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import httplib
  5. import StringIO
  6. import sys
  7. from unittest import TestCase
  8. from test import test_support
  9.  
  10. class FakeSocket:
  11.     
  12.     def __init__(self, text, fileclass = StringIO.StringIO):
  13.         self.text = text
  14.         self.fileclass = fileclass
  15.  
  16.     
  17.     def sendall(self, data):
  18.         self.data = data
  19.  
  20.     
  21.     def makefile(self, mode, bufsize = None):
  22.         if mode != 'r' and mode != 'rb':
  23.             raise httplib.UnimplementedFileMode()
  24.         
  25.         return self.fileclass(self.text)
  26.  
  27.  
  28.  
  29. class NoEOFStringIO(StringIO.StringIO):
  30.     """Like StringIO, but raises AssertionError on EOF.
  31.  
  32.     This is used below to test that httplib doesn't try to read
  33.     more from the underlying file than it should.
  34.     """
  35.     
  36.     def read(self, n = -1):
  37.         data = StringIO.StringIO.read(self, n)
  38.         if data == '':
  39.             raise AssertionError('caller tried to read past EOF')
  40.         
  41.         return data
  42.  
  43.     
  44.     def readline(self, length = None):
  45.         data = StringIO.StringIO.readline(self, length)
  46.         if data == '':
  47.             raise AssertionError('caller tried to read past EOF')
  48.         
  49.         return data
  50.  
  51.  
  52.  
  53. class HeaderTests(TestCase):
  54.     
  55.     def test_auto_headers(self):
  56.         import httplib
  57.         
  58.         class HeaderCountingBuffer(list):
  59.             
  60.             def __init__(self):
  61.                 self.count = { }
  62.  
  63.             
  64.             def append(self, item):
  65.                 kv = item.split(':')
  66.                 if len(kv) > 1:
  67.                     lcKey = kv[0].lower()
  68.                     self.count.setdefault(lcKey, 0)
  69.                     self.count[lcKey] += 1
  70.                 
  71.                 list.append(self, item)
  72.  
  73.  
  74.         for explicit_header in (True, False):
  75.             for header in ('Content-length', 'Host', 'Accept-encoding'):
  76.                 conn = httplib.HTTPConnection('example.com')
  77.                 conn.sock = FakeSocket('blahblahblah')
  78.                 conn._buffer = HeaderCountingBuffer()
  79.                 body = 'spamspamspam'
  80.                 headers = { }
  81.                 if explicit_header:
  82.                     headers[header] = str(len(body))
  83.                 
  84.                 conn.request('POST', '/', body, headers)
  85.                 self.assertEqual(conn._buffer.count[header.lower()], 1)
  86.             
  87.         
  88.  
  89.  
  90.  
  91. def test():
  92.     buf = StringIO.StringIO()
  93.     _stdout = sys.stdout
  94.     
  95.     try:
  96.         sys.stdout = buf
  97.         _test()
  98.     finally:
  99.         sys.stdout = _stdout
  100.  
  101.     s = buf.getvalue()
  102.     for line in s.split('\n'):
  103.         print line.strip()
  104.     
  105.  
  106.  
  107. def _test():
  108.     body = 'HTTP/1.1 200 Ok\r\n\r\nText'
  109.     sock = FakeSocket(body)
  110.     resp = httplib.HTTPResponse(sock, 1)
  111.     resp.begin()
  112.     print resp.read()
  113.     resp.close()
  114.     body = 'HTTP/1.1 400.100 Not Ok\r\n\r\nText'
  115.     sock = FakeSocket(body)
  116.     resp = httplib.HTTPResponse(sock, 1)
  117.     
  118.     try:
  119.         resp.begin()
  120.     except httplib.BadStatusLine:
  121.         print 'BadStatusLine raised as expected'
  122.  
  123.     print 'Expect BadStatusLine'
  124.     for hp in ('www.python.org:abc', 'www.python.org:'):
  125.         
  126.         try:
  127.             h = httplib.HTTP(hp)
  128.         except httplib.InvalidURL:
  129.             print 'InvalidURL raised as expected'
  130.             continue
  131.  
  132.         print 'Expect InvalidURL'
  133.     
  134.     for hp, h, p in (('[fe80::207:e9ff:fe9b]:8000', 'fe80::207:e9ff:fe9b', 8000), ('www.python.org:80', 'www.python.org', 80), ('www.python.org', 'www.python.org', 80), ('[fe80::207:e9ff:fe9b]', 'fe80::207:e9ff:fe9b', 80)):
  135.         
  136.         try:
  137.             http = httplib.HTTP(hp)
  138.         except httplib.InvalidURL:
  139.             print 'InvalidURL raised erroneously'
  140.  
  141.         c = http._conn
  142.         if h != c.host:
  143.             raise AssertionError, ('Host incorrectly parsed', h, c.host)
  144.         
  145.         if p != c.port:
  146.             raise AssertionError, ('Port incorrectly parsed', p, c.host)
  147.             continue
  148.     
  149.     text = 'HTTP/1.1 200 OK\r\nSet-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"\r\nSet-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"\r\n\r\nNo body\r\n'
  150.     hdr = 'Customer="WILE_E_COYOTE"; Version="1"; Path="/acme", Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"'
  151.     s = FakeSocket(text)
  152.     r = httplib.HTTPResponse(s, 1)
  153.     r.begin()
  154.     cookies = r.getheader('Set-Cookie')
  155.     if cookies != hdr:
  156.         raise AssertionError, 'multiple headers not combined properly'
  157.     
  158.     sock = FakeSocket('HTTP/1.1 200 OK\r\nContent-Length: 14432\r\n\r\n', NoEOFStringIO)
  159.     resp = httplib.HTTPResponse(sock, 1, method = 'HEAD')
  160.     resp.begin()
  161.     if resp.read() != '':
  162.         raise AssertionError, 'Did not expect response from HEAD request'
  163.     
  164.     resp.close()
  165.  
  166.  
  167. def test_main(verbose = None):
  168.     tests = [
  169.         HeaderTests]
  170.     test_support.run_unittest(*tests)
  171.  
  172. test()
  173.